package com.expert.miniapp.service;

import com.expert.miniapp.dto.CaseDTO;
import com.github.pagehelper.PageInfo;

/**
 * CaseService - 案例服务接口
 *
 * @author System
 * @since 2025-10-19
 */
public interface CaseService {

    /**
     * 分页查询案例列表（包含关联的用户和资源信息）
     *
     * @param pageNum  页码（从1开始）
     * @param pageSize 每页记录数
     * @return 分页信息对象，包含案例DTO列表
     */
    PageInfo<CaseDTO> getCaseList(int pageNum, int pageSize);

    /**
     * 根据ID查询案例详情（包含关联的用户和资源信息）
     *
     * @param caseId 案例ID
     * @return 案例DTO对象，如果不存在则返回null
     */
    CaseDTO getCaseDetail(String caseId);

    /**
     * 从推荐项添加案例
     *
     * @param itemId 推荐项ID
     * @return 新创建的案例详情DTO
     * @throws IllegalArgumentException 如果itemId为空
     * @throws RuntimeException 如果推荐项不存在或已加入案例库
     */
    CaseDTO addCaseFromRecommendation(String itemId);
}
